//
//  NSDate+Sina.swift
//  03-新浪微博日期格式
//
//  Created by Admin on 16/9/12.
//  Copyright © 2016年 itcast. All rights reserved.
//

import Foundation

extension Date {
    /**
     将新浪日期转成系统日期:    如:2015-05-24 04:12:00 +0000
     - parameter string: 新浪日期
     - returns: 系统日期
     */
    static func dateDescription(fromSinaDateString string: String) -> String {
        
        /// 日期格式化类
        let df = DateFormatter()
        
        /// 指定区域,真机一定要指定
        df.locale = Locale(identifier: "en")
        
        /// 设置日期格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        /// 将字符串转成NSDate
        let date = df.date(from: string) ?? Date()
        
        return date.compareDate()
    }
    
    /// 日期描述字符串
    func compareDate() -> String {
        
        // 1. 获取当前日历
        let calendar = NSCalendar.current
        
        // 2. 判断当前日期
        if calendar.isDateInToday(self) {
            // 获取self和当前日期相差的秒数
            let delta = Int(Date().timeIntervalSince(self))
            if delta < 60 {
                return "刚刚"
            }
            
            if delta < 60 * 60 {
                return "\(delta / 60) 分钟前"
            }
            return "\(delta / 3600) 小时前"
        }
        
        // 日期格式
        var format = ""
        
        // 3. 其他日期
        if calendar.isDateInYesterday(self) {
            format = "昨天 HH:mm"
        } else if calendar.compare(self, to: Date(), toGranularity: Calendar.Component.year) == ComparisonResult.orderedSame {
            // 同一年
            format = "MM-dd HH:mm"
        } else {
            // 更早期
            format = "yyyy-MM-dd HH:mm"
        }
        
        // 根据指定的时间格式转成 时间字符串
        let df = DateFormatter()
        df.locale = Locale(identifier: "en")
        // 指定格式
        df.dateFormat = format
        // 将系统时间转成指定格式的字符串
        return df.string(from: self)
    }
}
